# -*- coding: utf-8 -*-
from django.contrib import admin
from datetime import timedelta, datetime

from comum.admin import EnderecoInline, TelefoneInline, EmailInline
from rh.models import Cargo, DadoFuncional, Dependente, Servidor, UnidadePagadora,\
    TipoExame, AtestadoSaude
from rh.forms import ServidorForm, DependenteForm, AtestadoSaudeForm

admin.site.register(Cargo)
admin.site.register(DadoFuncional)
#admin.site.register(Dependente)
#admin.site.register(Servidor)
admin.site.register(UnidadePagadora)
admin.site.register(TipoExame)
#admin.site.register(AtestadoSaude)

class DadoFuncionalInline(admin.StackedInline):
    model = DadoFuncional
    fields = ['unidade_pagadora']
    max_num = 1

############
# SERVIDOR #
############

class ServidorAdmin(admin.ModelAdmin):
    form = ServidorForm
    search_fields = ['nome', 'cpf']
    list_display = ['editar', 'opcoes', 'nome', 'cpf', 'get_dependentes']
    fieldsets = [
        ('Dados Pessoais', {'fields': [('nome','data_nascimento'),('matricula','matricula_siape'),('data_admissao','cargo','setor'),'estado_civil','nacionalidade',('naturalidade','uf'),('nome_mae','nome_pai'),('grupo_sanguineo',
                                       'fator_rh','sexo','raca'),('nec_especial','tipo_nec_especial'),'escolaridade','ativo']}),
        (u'Documentação', {'fields': [('rg','orgao_expeditor','data_expedicao'),'cpf','pis_pasep',('inscricao_teleitor','zona_teleitor','secao_teleitor'),
                                      ('num_militar','org_militar','serie_militar'),'num_passaporte']}),
    ]
    ordering = ['nome',]
    inlines = [EnderecoInline, TelefoneInline, EmailInline]

    def editar(self, obj):
        return '<img src="/media/img/16x16/editar.png" title="Editar" />'
    editar.allow_tags = True
    editar.short_description = ''
    editar.attrs = {'width': '10px'}
    
    def opcoes(self, obj):
        return '<a href="/rh/servidor/etiqueta/%s/"><img src="/media/img/16x16/etiqueta.png" title="Gerar Etiqueta" /></a> || \
        <a href="/rh/listar_dependente/%s/"><img src="/media/img/16x16/dependente_add.png" title="Adicionar Dependente" /></a> || \
        <a href="/rh/listar_atestado/%s/"><img src="/media/img/16x16/atestado_add.png" title="Atestados" /></a>' % (obj.pk, obj.pk, obj.pk)
    opcoes.allow_tags = True
    opcoes.short_description = 'Opções'
    opcoes.attrs = {'width': '10px'}
    
    def get_dependentes(self, obj):
        out = ['<ol>']
        for d in obj.dependente_set.order_by('nome'):
            out.append('<li>%s</li>' % d.nome)
        out.append('</ol>')
        return ''.join(out)
    get_dependentes.short_description = 'Lista de Dependetes'
    get_dependentes.allow_tags = True
    
admin.site.register(Servidor, ServidorAdmin)
#
class DependenteAdmin(admin.ModelAdmin):
    form = DependenteForm
    search_fields = ['nome', 'servidor__nome',]
    list_display = ['editar', 'nome', 'servidor']
    fieldsets = [
        ('Dados Pessoais do Dependente', {'fields': [('nome','data_nascimento'),('sexo','nacionalidade'),
                                                     ('grau_parentesco'),'cpf']}),
    ]
    inlines = [TelefoneInline,EmailInline,EnderecoInline]
    
    def editar(self, obj):
        return '<img src="/media/img/16x16/editar.png" title="Editar" />'
    editar.allow_tags = True
    editar.short_description = ''
    editar.attrs = {'width': '10px'}
admin.site.register(Dependente, DependenteAdmin)

class AtestadoSaudeAdmin(admin.ModelAdmin):
    form = AtestadoSaudeForm
    search_fields = ['servidor__nome',]
    list_display = ['editar', 'servidor', 'tipo_exame', 'get_data_exame', 'get_data_validade']
    fieldsets = [
        ('Dados do Atestado', {'fields': ['servidor','tipo_exame','data_exame','validade_exame']}),
    ]
    
    def editar(self, obj):
        return '<a href="/rh/editar_atestado/%s/"><img src="/media/img/16x16/editar.png" title="Editar" /></a>' % (obj.pk)
    editar.allow_tags = True
    editar.short_description = ''
    editar.attrs = {'width': '10px'}
    
    def get_data_exame(self, obj):
        return obj.data_exame.strftime("%d/%m/%Y")
    get_data_exame.short_description = u'Data do Exame'
    get_data_exame.admin_order_field = 'data_exame'
    get_data_exame.allow_tags = True
    
    def get_data_validade(self, obj):
        if obj.data_validade >= datetime.now().date() and obj.data_validade <= (datetime.now().date() + timedelta(30)):
            return "<span  style='color:red'>%s</span>" % obj.data_validade.strftime("%d/%m/%Y")
        elif obj.data_validade > (datetime.now().date() + timedelta(30)):
            return "<span  style='color:blue'>%s</span>" % obj.data_validade.strftime("%d/%m/%Y")
        elif obj.data_validade < datetime.now().date():
            return obj.data_validade.strftime("%d/%m/%Y")
    get_data_validade.short_description = u'Data da Validade'
    get_data_validade.admin_order_field = 'data_validade'
    get_data_validade.allow_tags = True
admin.site.register(AtestadoSaude, AtestadoSaudeAdmin)